package ejemplos.semaforo.consumidorProductor;

import semaforo.Semaforo;

public class Productor extends Thread {

	private Semaforo exclusivo;

	private Semaforo ocupado;

	private Semaforo libre;

	//private Integer contador;

	@Override
	public void run() {
		for (int i = 0; i < 50; i++) {
			libre.consumir();
			exclusivo.consumir();
			// El productor llena un slot. Cada slot tiene 10000 unidades.
			System.out.println("P" + i + ": IN");
			producir();
			System.out.println("P" + i + ": OUT");
			exclusivo.liberar();
			ocupado.liberar();
			try {
				long siesta = (long) (Math.random()*10000);
				System.out.println("P : Dormire por: " + siesta);
				Thread.sleep(siesta);
			} catch (InterruptedException e) {
				// No importa tratar esta exception. Es solo para darle tiempo al otro hilo
			}
		}
	}

	private void producir() {
//		for (int i = 0; i < 10000; i++) {
//			contador++;
//		}
//		if (contador % 10000 != 0) {
//			System.err.println("Invadieron espacio restringido!. contador = "
//					+ contador);
//			System.exit(-1);
//		}
	}

	public Semaforo getExclusivo() {
		return exclusivo;
	}

	public void setExclusivo(Semaforo exlusivo) {
		this.exclusivo = exlusivo;
	}

	public Semaforo getLibre() {
		return libre;
	}

	public void setLibre(Semaforo libre) {
		this.libre = libre;
	}

	public Semaforo getOcupado() {
		return ocupado;
	}

	public void setOcupado(Semaforo ocupado) {
		this.ocupado = ocupado;
	}

//	public Integer getContador() {
//		return contador;
//	}
//
//	public void setContador(Integer contador) {
//		this.contador = contador;
//	}
}
